---
title: Singletons
summary: >-
  When you want a “one-of-a-kind” data entry, such as a “Settings” page or maybe
  a very specific set of fields for the “Homepage” of a website, you will want to
  use a singleton.
---
When you want a “one-of-a-kind” data entry, such as a “Settings” page or maybe a very specific set of fields for the “Homepage” of a website, you will want to use a `singleton`.

## Example

Here's how you'd define a `settings` singleton:

```jsx
// keystatic.config.ts
import { config, singleton } from '@keystatic/core';

export default config({
  // ...
  singletons: {
    settings: singleton({
      label: 'Settings',
      schema: {}
    }),
  },
});
```

---

## Options

### Entry layout

`entryLayout` — change the layout of the Admin UI for the singleton data entry.

Learn more on the [Entry Layout](/docs/entry-layout) page.

### Format

`format` — provides options around the data format of your singleton. 

Learn more on the [Format Options](/docs/format-options) page.

### Label 

`label` — defines the name of the singleton. This is used in the Admin UI.

### Path

`path` — allows you to you specify *where* to store the singleton data:

```tsx
path: 'custom/content/path/settings'
```

Learn more about the `path` option on the [Content Organisation](/docs/content-organisation) page.

### Preview URL

`previewURL` — used to configure [Real-time Previews](/docs/recipes/real-time-previews) of your content.

### Schema 

`schema` — defines the fields that the singleton should have.

---

## Type signature

Find the latest version of the `Singleton` type signature at: [https://docsmill.dev/npm/@keystatic/core@latest#/.Singleton](https://docsmill.dev/npm/@keystatic/core@latest#/.Singleton)
